layui
  .extend({
    setter: "config", //配置模块
    admin: "lib/admin", //核心模块
    view: "lib/view", //视图渲染模块
  })
  .define(["setter", "admin"], function (exports) {
    var setter = layui.setter,
      element = layui.element,
      admin = layui.admin,
      tabsPage = admin.tabsPage,
      view = layui.view,
      //打开标签页
      openTabsPage = function (url, text) {
        //遍历页签选项卡
        var matchTo,
          tabs = $("#LAY_app_tabsheader>li"),
          path = url.replace(/(^http(s*):)|(\?[\s\S]*$)/g, "");

        tabs.each(function (index) {
          var li = $(this),
            layid = li.attr("lay-id");

          if (layid === url) {
            matchTo = true;
            tabsPage.index = index;
          }
        });

        text = text || "新标签页";

        if (setter.pageTabs) {
          //如果未在选项卡中匹配到，则追加选项卡
          if (!matchTo) {
            $(APP_BODY).append(
              [
                '<div class="layadmin-tabsbody-item layui-show">',
                '<iframe src="' +
                  url +
                  '" frameborder="0" class="layadmin-iframe"></iframe>',
                "</div>",
              ].join("")
            );
            tabsPage.index = tabs.length;
            element.tabAdd(FILTER_TAB_TBAS, {
              title: "<span>" + text + "</span>",
              id: url,
              attr: path,
            });
          }
        } else {
          var iframe = admin
            .tabsBody(admin.tabsPage.index)
            .find(".layadmin-iframe");
          iframe[0].contentWindow.location.href = url;
        }

        //定位当前tabs
        element.tabChange(FILTER_TAB_TBAS, url);
        admin.tabsBodyChange(tabsPage.index, {
          url: url,
          text: text,
        });
      },
      APP_BODY = "#LAY_app_body",
      FILTER_TAB_TBAS = "layadmin-layout-tabs",
      $ = layui.$,
      $win = $(window);

    //初始
    if (admin.screen() < 2) admin.sideFlexible();

    //将模块根路径设置为 controller 目录
    layui.config({
      base: setter.base + "modules/",
    });

    //扩展 lib 目录下的其它模块
    layui.each(setter.extend, function (index, item) {
      var mods = {};
      mods[item] = "{/}" + setter.base + "lib/extend/" + item;
      layui.extend(mods);
    });

    view().autoRender();
    // 加载公共模块
    // layui.use("common");
    // 白名单：跳转至某些页面，或者调取某些接口时，不需要进行token校验
    var pageWhiteList = layui.setter.pageWhiteList;
    var pathName = location.pathname;
    var resultList = pageWhiteList.filter(function (x) {
      return (
        x ===
        (pathName.indexOf("?") !== -1
          ? pathName.substr(0, pathName.indexOf("?"))
          : pathName)
      );
    });
    //未通过白名单
    if (resultList.length === 0) {
      var token = layui.sessionData("userToken").key;
      if (token == null) {
        parent.location.href = "./login.html";
      }
    }

    //对外输出
    exports("index", {
      openTabsPage: openTabsPage,
    });
  });
